/* clientes.c - Programa para auxiliar os testes do Servidor de variável
 * condição.
 */

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>

#define MAX_BUF 15
#define WAIT 0
#define SIGNAL 1
#define BROADCAST 2

int main(int argc, char *argv[]) {
	int escreve_fd, recebe_fd, tipo;
	char str[MAX_BUF], fifo[5];

	escreve_fd = open("receive", 1);

	tipo = atoi(argv[1]);

	switch (tipo) {
	case WAIT:
		sprintf(fifo, "%d", getpid());
		mkfifo(fifo, 0666);

		sprintf(str, "wait %s\0", fifo);
		write(escreve_fd, str, sizeof(str));
		
		recebe_fd = open(fifo, 0);
		while (!read(recebe_fd, str, MAX_BUF));
		printf("Fui liberado %s com %s\n", fifo, str);
		break;
	case SIGNAL:
		sprintf(str, "signal\0");
		write(escreve_fd, str, sizeof(str));
		break;
	case BROADCAST:
		sprintf(str, "broadcast\0");
		write(escreve_fd, str, sizeof(str));
		break;
	}
}
